﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;

namespace Sispe.BussinesLogic
{
    public interface IContratoBL
    {
        List<CONTRATO> GetAllFromContratos();
        List<CONTRATO> GetFromContratoByTrabajador(string descripcion);
        List<CONTRATO> GetFromContratoByIdTipoTrabajador();
        CONTRATO GetFromContratoById(Int32 id);

        void AddContrato(CONTRATO contrato);
        void UpdateContrato(CONTRATO contrato);
        void RemoveContrato(Int32 id);
        List<CONTRATO> GetFromContratoVigenteByTrabajador(string descripcion);
        List<CONTRATO> GetAllFromContratosVigentes();
        List<CONTRATO> GetAllFromContratoByFecha(Int32 fecIni, Int32 fecFin);
        List<CONTRATO> GetAllContratoByProyecto(string descripcion);
        List<CONTRATO> GetAllContratoByEspecialidad(string descripcion);
        List<CONTRATO> GetAllContratoVigenteByProyecto(string descripcion);
        List<CONTRATO> GetAllContratoVigenteByEspecialidad(string descripcion);

        List<CONTRATO> GetAllFromContratoByObreros();
        List<CONTRATO> GetAllContratosVigentesByObreros();
        List<CONTRATO> GetAllContratosVigentesToObrerosByTrabajador(string descripcion);
        List<CONTRATO> GetAllContratosToObrerosByTrabajador(string descripcion);
        List<CONTRATO> GetAllFromContratoToObreroByFecha(Int32 fecIni, Int32 fecFin);
        List<CONTRATO> GetAllContratosToObrerosByEspecialidad(string descripcion);
        List<CONTRATO> GetAllContratosToObrerosByProyecto(string descripcion);
        List<CONTRATO> GetAllContratosVigentesToObreroByEspecialidad(string descripcion);
        List<CONTRATO> GetAllContratosVigentesToObreroByProyecto(string descripcion);

        List<CONTRATO> GetAllFromContratoByStaff();
        List<CONTRATO> GetAllContratosVigentesByStaff();
        List<CONTRATO> GetAllContratosVigentesToStaffByTrabajador(string descripcion);
        List<CONTRATO> GetAllContratosToStaffByTrabajador(string descripcion);
        List<CONTRATO> GetAllFromContratoToStaffByFecha(Int32 fecIni, Int32 fecFin);
        List<CONTRATO> GetAllContratosToStaffByEspecialidad(string descripcion);
        List<CONTRATO> GetAllContratosToStaffByProyecto(string descripcion);
        List<CONTRATO> GetAllContratosVigentesToStaffByEspecialidad(string descripcion);
        List<CONTRATO> GetAllContratosVigentesToStaffByProyecto(string descripcion);

        void TerminoContrato(CONTRATO contrato);

        List<CONTRATO> GetFromContratobyRangoFechas(DateTime? fec1, DateTime? fec2);
        List<CONTRATO> GetFromContratosPorVencer();
        CONTRATO GetFromContratosPorVencerByIdTrabajador(Int32 IdTrabajador);
        List<CONTRATO> GetFromContratosEnLiquidacion();
    }
}
